/**
 * File : RedisUtil.java <br/>
 * Author : rising.xin <br/>
 * Version : 1.1 <br/>
 * Date : 2017年1月9日 <br/>
 * Modify : <br/>
 * Package Name : com.zhongpin.zz.redis.utils <br/>
 * Project Name : zp-zz-redis <br/>
 * Description : <br/>
 * 
 */

package com.redis.utils;

import org.apache.log4j.Logger;

import redis.clients.jedis.JedisCluster;

/**
 * ClassName : RedisUtil <br/>
 * Function : RedisUtil <br/>
 * Reason : RedisUtil <br/>
 * Date : 2017年1月9日 下午1:57:37 <br/>
 * 
 * @author : rising.xin <br/>
 * @version : 1.1 <br/>
 * @since : JDK 1.6 <br/>
 * @see
 */
public final class RedisClusterUtil {
	
	private Logger logger = Logger.getLogger(RedisClusterUtil.class);

	
	private JedisCluster jedisCluster;

	/**
	 * 
	 * 功能：<br/>
	 * 批量删除对应的value
	 * 
	 * @param keys
	 *
	 * @author rising.xin
	 * @version 2017年1月11日 下午3:13:28 <br/>
	 */
	public void remove(final String... keys) {
		for (String key : keys) {
			remove(key);
		}
	}

	/**
	 * 
	 * 功能：<br/>
	 * 根据key单一删除
	 * 
	 * @param key
	 *
	 * @author rising.xin
	 * @version 2017年1月11日 下午3:12:45 <br/>
	 */
	public void remove(final String key) {
		if (exists(key)) {
			jedisCluster.del(key);
			logger.info("remove success : key = " + key);
		}
	}

	/**
	 * 
	 * 功能：<br/>
	 * 判断缓存中是否有key对应的value
	 * 
	 * @param key
	 *
	 * @author rising.xin
	 * @version 2017年1月11日 下午3:12:16 <br/>
	 */
	public boolean exists(final String key) {
		return jedisCluster.exists(key);
	}

	/**
	 * 
	 * 功能：<br/>
	 * 读取缓存
	 * 
	 * @param key
	 *
	 * @author rising.xin
	 * @version 2017年1月11日 下午3:11:32 <br/>
	 */
	public String get(final String key) {
		return jedisCluster.get(key);
	}

	/**
	 * 
	 * 功能：<br/>
	 * 写入缓存
	 * 
	 * @param key
	 * @param value
	 *
	 * @author rising.xin
	 * @version 2017年1月11日 下午3:10:25 <br/>
	 */
	public boolean set(final String key, String value) {
		boolean result = false;
		try {
			jedisCluster.set(key, value);
			result = true;
		}catch (Exception e) {
			logger.error("set method error ", e);
			result = false;
		}
		return result;
	}

	/**
	 * 
	 * 功能：<br/>
	 * 写入缓存
	 * 
	 * @param key
	 * @param value
	 * @param expireTime
	 *
	 * @author rising.xin
	 * @version 2017年1月11日 下午3:10:25 <br/>
	 */
	public boolean set(final String key, String value, int seconds) {
		boolean result = set(key,value);
		if(result){
			result = delay(key, seconds);
		}
		return result;
	}
	
	/**
	 * 
	 * 功能：<br/>
	 * cache延时
	 *
	 *@param key
	 *@param expireTime
	 *
	 * @author rising.xin
	 * @version 2017年1月11日 下午3:07:04 <br/>
	 */
	public boolean delay(final String key, int seconds){
		boolean result = false;
		try {
			jedisCluster.expire(key, seconds);
			result = true;
		}catch (Exception e) {
			logger.error("delay expireTime method error ", e);
			result = false;
		}
		return result;
	}

	public void setJedisCluster(JedisCluster jedisCluster) {
		this.jedisCluster = jedisCluster;
	}
	
}
